package com.lekang.mapper;

import java.util.List;
import com.lekang.domain.NursingLevel;
import org.apache.ibatis.annotations.Param;

/**
 * 护理等级Mapper接口
 * 
 * @author ruoyi
 * @date 2025-10-14
 */
public interface NursingLevelMapper 
{
    /**
     * 查询护理等级
     * 
     * @param id 护理等级主键
     * @return 护理等级
     */
    public NursingLevel selectNursingLevelById(Long id);

    /**
     * 查询护理等级列表
     * 
     * @param nursingLevel 护理等级
     * @return 护理等级集合
     */
    public List<NursingLevel> selectNursingLevelList(NursingLevel nursingLevel);

    /**
     * 新增护理等级
     * 
     * @param nursingLevel 护理等级
     * @return 结果
     */
    public int insertNursingLevel(NursingLevel nursingLevel);

    /**
     * 修改护理等级
     * 
     * @param nursingLevel 护理等级
     * @return 结果
     */
    public int updateNursingLevel(NursingLevel nursingLevel);

    /**
     * 删除护理等级
     * 
     * @param id 护理等级主键
     * @return 结果
     */
    public int deleteNursingLevelById(Long id);

    /**
     * 批量删除护理等级
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteNursingLevelByIds(Long[] ids);



    int deleteBindingByLevelId(@Param("levelId") Long levelId);
    int batchInsertBinding(@Param("levelId") Long levelId, @Param("planIds") List<Long> planIds);

    /**
     * 根据护理等级名称查询护理等级
     * 
     * @param levelName 护理等级名称
     * @return 护理等级
     */
    public NursingLevel selectNursingLevelByName(@Param("levelName") String levelName);
    
    /**
     * 根据护理计划ID查询护理等级
     * 
     * @param planId 护理计划ID
     * @return 护理等级
     */
    public NursingLevel selectNursingLevelByPlanId(@Param("planId") Long planId);
    
    /**
     * 检查护理等级是否被老人使用（通过入住管理表）
     * 
     * @param levelId 护理等级ID
     * @return 使用该护理等级的老人数量
     */
    public int countElderlyByLevelId(@Param("levelId") Long levelId);
}
